2008/02/20

ロカポーターのしくみ(5)

5.可変精度の例

前回のデータの途中部分、電車の駅の部分は、駅であることが分かれば良いので200mほどの精度でも十分でしょう。この例では手を抜いて本当に駅だけですが、途中経路の形をもう少しこまかく(たとえば高速道路のカタチで)取りたいというような場合、重要度の低い部分を非可逆圧縮にして精度を落とすことで、もう少し圧縮できるようになります。

駅の部分だけ200mの精度(4桁にコード化したもの)にしてみましょう。


ここで、青字にしたところが、精度を下げたところと、元に戻した(上げた)ところです。
ともに「_」(アンダースコア)が精度変更のサインになります。コードがアンダースコアで終わる場合は精度を下げる(桁を減らす)記号、反対にアンダースコアのあとコードが続く場合は、これまでの桁数にプラスしてアンダースコア以下の桁数を増やすという記号となります。
ここで、アンダースコア直前の文字は、全データと同じであっても省略しないことに注意してください。これにより「アンダースコアから始まる省略データは存在し得ない」というルールができますので、連結時にコードの境界にアンダースコアがある場合(例 AAAA_bbbb)、そのアンダースコアは前のデータに属していることが明確なので、例では(AAAA_ と bbbb)に分離します。(AAAAと _bbbb にはなりません)
詳細はロカポーターのサイトからダウンロードできる仕様書ご覧ください。

これによって、データがさらに圧縮できる場合があります。
この元データの例では、対象となるデータ数が少ないので、ほとんど変わりませんが、少しだけ短くなってきます。

可変精度前(データ部分のみ)
RZHBZwuimjCAjBZmAKnKrGZWqSrRtIoSABWSeyuYCjzELOkfDIBAxcdzuJEAhpNiyGCjqITluWwWxUmaTlz

可変精度適用後(データ部分のみ)
RZHBZwuimjCAjBZmAKnKrGZWqSrRtZ_m_SABWeyYjELkDIBxcdzJEhE_Ni_yGCjqITluWwWxUmaTlz


以上がロカポーターの基本的な仕組みになります。

次回から、ロカポーターがどのような用途に使えるのか、いろいろ検討していきたいと思います。

0 件のコメント: